Django তে Serializer এবং ViewSet হল Django REST Framework (DRF) এর গুরুত্বপূর্ণ অংশ, যা API তৈরি করার সময় ডেটার সিরিয়ালাইজেশন (data serialization) এবং ভিউ সেট আপ (view set up) সহজ করে তোলে। Serializer ডেটাকে JSON বা অন্যান্য ফরম্যাটে রূপান্তরিত করে, এবং ViewSet বিভিন্ন HTTP রিকোয়েস্ট (GET, POST, PUT, DELETE) এর জন্য কন্ট্রোলার হিসেবে কাজ করে।
১. Serializer কী?
Serializer Django REST Framework (DRF) এর একটি কম্পোনেন্ট যা ডেটাকে Python ডেটা স্ট্রাকচার থেকে JSON বা অন্য ফরম্যাটে রূপান্তরিত করে (serialization), এবং একইভাবে JSON বা অন্য ফরম্যাট থেকে Python ডেটা স্ট্রাকচারেও রূপান্তরিত করে (deserialization)। এটি মূলত Model অথবা Dictionary থেকে JSON ফরম্যাটে ডেটা আউটপুট করতে ব্যবহৃত হয়।
Serializer তৈরি করার ধাপ
- প্রথমে আপনাকে একটি মডেল তৈরি করতে হবে, যেটা আপনি সিরিয়ালাইজ করতে চান।
- এরপর, সেই মডেলটির জন্য একটি Serializer ক্লাস তৈরি করতে হবে।
উদাহরণ:
ধরা যাক, আমাদের একটি Book মডেল আছে, যেটি আমরা সিরিয়ালাইজ করতে চাই।
মডেল:
from django.db import models
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.CharField(max_length=100)
published_date = models.DateField()
def __str__(self):
return self.title
Serializer তৈরি:
from rest_framework import serializers
from .models import Book
class BookSerializer(serializers.ModelSerializer):
class Meta:
model = Book
fields = ['id', 'title', 'author', 'published_date']
এখানে:
BookSerializerক্লাসটিModelSerializerথেকে ইনহেরিট করেছে, যেটি ডেটাবেস মডেলের উপর ভিত্তি করে সিরিয়ালাইজেশন প্রক্রিয়া সহজ করে।Metaক্লাসে মডেলটি এবং এর ফিল্ডগুলো স্পেসিফাই করা হয়েছে, যা ডেটা JSON আউটপুটে রূপান্তরিত করবে।
২. ViewSet কী?
ViewSet হলো Django REST Framework এর একটি ক্লাস যা HTTP রিকোয়েস্টের জন্য বিভিন্ন ভিউ ফাংশন (যেমন GET, POST, PUT, DELETE) একত্রিত করে। এটি Django-তে API তৈরি করার ক্ষেত্রে ডেটা হ্যান্ডলিং এবং রাউটিংকে সহজ করে তোলে।
ViewSet এর প্রধান সুবিধা হলো এটি কোডের পুনঃব্যবহারযোগ্যতা এবং দ্রুত API ডেভেলপমেন্ট নিশ্চিত করে, কারণ এতে HTTP রিকোয়েস্ট হ্যান্ডল করার জন্য আলাদা আলাদা ভিউ ফাংশন লিখতে হয় না।
ViewSet তৈরি করার ধাপ
- প্রথমে, আপনার serializer তৈরি করতে হবে।
- এরপর, ViewSet ক্লাস তৈরি করতে হবে, যা আপনার serializer এবং মডেল সংযুক্ত করবে।
উদাহরণ:
from rest_framework import viewsets
from .models import Book
from .serializers import BookSerializer
class BookViewSet(viewsets.ModelViewSet):
queryset = Book.objects.all()
serializer_class = BookSerializer
এখানে:
BookViewSetক্লাসটিModelViewSetথেকে ইনহেরিট করেছে, যা সিলেক্টেড মডেলের জন্য ডিফল্ট CRUD অপারেশন (Create, Read, Update, Delete) সরবরাহ করে।queryset: এটি সেই মডেল অবজেক্টগুলোর তালিকা যা আপনি API রেসপন্সে পেতে চান।serializer_class: এখানে আমরাBookSerializerব্যবহার করছি, যাতে Book মডেলের ডেটা JSON ফরম্যাটে রূপান্তরিত হয়।
৩. URL Routing
ViewSet তৈরি করার পর, আপনাকে এই ViewSet কে URL পাথে যুক্ত করতে হবে, যাতে ক্লায়েন্ট HTTP রিকোয়েস্ট পাঠাতে পারে। Django REST Framework এ router ব্যবহার করে এই রাউটিং সম্পন্ন করা যায়।
উদাহরণ:
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from .views import BookViewSet
# Router সেট আপ
router = DefaultRouter()
router.register(r'books', BookViewSet)
# URL patterns
urlpatterns = [
path('api/', include(router.urls)),
]
এখানে:
DefaultRouterএকটি ডিফল্ট রাউটার যাModelViewSetএ থাকা ডিফল্ট ভিউ ফাংশনগুলো রেজিস্টার করে, যেমন list, create, retrieve, update, destroy ইত্যাদি।path('api/', include(router.urls))URL প্যাথ এbooksরাউটিং পয়েন্ট যুক্ত করেছে, যাBookViewSetএর সকল অপারেশনকে HTTP রিকোয়েস্ট হ্যান্ডল করতে সক্ষম করবে।
৪. API ব্যবহার
এখন আপনি Django API এ books রাউটের মাধ্যমে বিভিন্ন HTTP রিকোয়েস্ট পাঠিয়ে Book মডেলের ডেটা অ্যাক্সেস এবং ম্যানিপুলেট করতে পারবেন।
- GET
/api/books/- সমস্ত বইয়ের তালিকা। - POST
/api/books/- নতুন বই তৈরি। - GET
/api/books/{id}/- নির্দিষ্ট বইয়ের বিস্তারিত। - PUT
/api/books/{id}/- নির্দিষ্ট বই আপডেট। - DELETE
/api/books/{id}/- নির্দিষ্ট বই মুছে ফেলা।
সারাংশ
- Serializer Django REST Framework এর একটি গুরুত্বপূর্ণ অংশ, যা ডেটাকে JSON বা অন্য ফরম্যাটে রূপান্তরিত করে।
- ViewSet ডিফল্ট CRUD অপারেশন সরবরাহ করে এবং API তৈরি করা সহজ করে।
- URL Routing এবং Router ব্যবহার করে ViewSet কে URL পাথে যুক্ত করতে হয়।
এভাবে আপনি Django REST Framework এর মাধ্যমে খুব সহজেই একটি API তৈরি করতে পারেন।
Read more